package cn.tedu.oopstatic;
/**本类用于测试三种代码块与他们的执行顺序*/
public class TestBlock {
    public static void main(String[] args) {
        Pig p0=new Pig();
        Pig p1=new Pig();
        Pig p3=new Pig();
        p0.eat();
        System.out.println(p0.name);
        System.out.println(p1.name);
        p0.age= p0.age-10;
        p1.age= p1.age-20;
        System.out.println(p0.age);
        System.out.println(p1.age);
    }
}
class Pig{
    /**静态代码块：
     * 位置：类里方法外
     * 执行时机：静态代码块也属于类资源，随着类的加载而加载，优先于对象加载，只加载一次
     * 作用：用于加载一些需要第一时间就加载，并且只加载一次的资源
     * */
    String name;
    int age;
//    {
//        name="佩奇";
//    }

    public Pig() {
        name = "佩奇";
        age=100;
    }

    static {
        System.out.println("俺是静态代码块");
    }
    {
        System.out.println("我是构造代码块");
    }
//    public Pig() {
//        System.out.println("我是无参构造代码块");
//    }
    public void eat(){
        System.out.println("我是普通方法，小猪猪吃饭");
        {
            System.out.println("小猪猪还吃饭，局部代码块");
        }
    }
}